package com.yidu.ladder.route.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.yidu.ladder.route.dao.BusStationDao;
import com.yidu.ladder.route.domain.BusStation;
import com.yidu.ladder.route.domain.BusStationVo;
import com.yidu.ladder.route.service.BusStationService;

/**
 * 
 * @ClassName: BusStationServiceImpl
 * @Description: 汽车站服务实现类
 * @author ChenLin
 * @date 2019-12-25 02:31:59
 */
@Service
public class BusStationServiceImpl implements BusStationService {
	
	@Autowired
	private BusStationDao busStationDao;
	
	
	
	public BusStationDao getBusStationDao() {
		return busStationDao;
	}


	public void setBusStationDao(BusStationDao busStationDao) {
		this.busStationDao = busStationDao;
	}


	@Override
	public Map<String, Object> queryBusStationWithPage(BusStationVo busStationVo) {
		// 设置页面：page-1*limit
		busStationVo.setPage((busStationVo.getPage() -1) * busStationVo.getLimit());
		// 执行Dao层带条件的分页查询
		List<BusStation> busStationList = busStationDao.queryBusStationWithPage(busStationVo);
		// 每次查询都执行得到相应的记录数
		int busStationCount = busStationDao.countBusStation(busStationVo);
		//创建一个Map接收数据返回给前端
		Map<String, Object> map = new HashMap<String, Object>();
		// 往map集合存放code
		map.put("code", 0);
		// 往map集合存放每次查询得到相应的记录数
		map.put("count", busStationCount);
		// 往map集合存放分页查询的结果
		map.put("data", busStationList);
		// 返回map给前端
		return map;
	}
	
	
	@Override
	public int countBusStation(BusStationVo busStationVo) {
		return 0;
	}

	
	@Override
	public int saveBusStation(BusStationVo busStationVo) {
		// 执行添加汽车站方法
		return busStationDao.saveBusStation(busStationVo);
	}


	@Override
	public int updateBusStationById(BusStationVo busStationVo) {
		// 执行根据id修改汽车站信息方法
		return busStationDao.updateBusStationById(busStationVo);
	}


	@Override
	public boolean frozenOrRecovebusStation(String busStationIdstr, String flag) {
				//创建传参的Map集合
				Map<String, Object> paramMap = new HashMap<String, Object>();
				//定义状态变量
				String useable = flag;
				//根据逗号分割ID
				String[] busStationIds = busStationIdstr.split(",");
				//定义执行结果返回的总数 
				int total = 0;
				// 若小于汽车站id的总数，一直循环
				for (int i =0; i < busStationIds.length; i++) {
					//往传参的Map集合添加汽车站id
					paramMap.put("busStationId", busStationIds[i]);
					//往传参的Map集合添加要修改的状态
					paramMap.put("useable", useable);
					//执行冻结或还原方法
					int result = busStationDao.frozenOrRecovebusStation(paramMap);
					//计数，因为成功返回1，所以把所有执行结果加起来正好就等于ID的总数
					total += result;
				}
				// 判断计数的结果和汽车站id集合是否相等(三元判断)
				return total == busStationIds.length ? true : false;
	}


	@Override
	public int deleteBusStationById(String busStationId) {
		// 执行根据id删除汽车站方法并返回执行结果
		return busStationDao.deleteBusStationById(busStationId);
	}


	@Override
	public List<BusStation> queryAllBusStation() {
		/// 调用查询所有汽车站信息并返回执行后的汽车站集合
		return busStationDao.queryAllBusStation();
	}


	@Override
	public Map<String, Object> queryBusStationbycondition(BusStationVo busStationVo) {
		// 执行根据条件查询所有汽车站信息方法
		 List<BusStation> list = busStationDao.queryBusStationbycondition(busStationVo);
		 // 创建一个map集合返回给前端
		 Map<String, Object> map = new HashMap<String, Object>();
		 // 往map集合中添加执行后的结果
		 map.put("data", list);
		 // 返回这个集合
		 return map;
		 
	}


	@Override
	public List<BusStation> queryAllCity() {
		// 执行查询所有城市方法并返回结果
		return busStationDao.queryAllCity();
	}


	@Override
	public List<BusStation> queryAllBusStationByCity(String city) {
		// 执行根据城市查询所有汽车站信息方法并返回执行结果
		return busStationDao.queryAllBusStationByCity(city);
	}

}
